//#include <iostream>
//#include <vector>
//#include<algorithm>
//#include<unordered_map>
//using namespace std;
////需要最高性能查找 → unordered_map / unordered_set
////需要范围查询 → map/set
//vector<vector<string>> groupAnagrams(vector<string>& strs) {
//    unordered_map<string, vector<string>> myhash;
//    for (string& x : strs)
//    {
//        string a = x;
//        sort(a.begin(), a.end());               //以排序后的string为key，value是一个vector<string>数组
//        myhash[a].emplace_back(x);
//
//    }
//    vector<vector<string>> answer;
//    for (auto it = myhash.begin(); it != myhash.end(); ++it)//注意it++和++it的区别，后置直接返回
//    {                                                      ///比前置++耗费空间更小
//        answer.emplace_back(it->second);                    //数据越大越明显
//    }
//    return answer;
//}
//
//int main()
//{
//    vector<string> strs = { "eat", "tea", "tan", "ate", "nat", "bat" };
//    vector<vector<string>> result = groupAnagrams(strs);//返回[["bat"],["nat","tan"],["ate","eat","tea"]]
//    int len= result.size();
//    for (int i = 0; i < len; i++)
//    {
//        int seclen = result[i].size();
//        for (int j = 0; j < seclen; j++)
//        {
//            cout << result[i][j] << " ";
//        }
//        cout << endl;
//    }
//    return 0;
//}